package com.ad.platform.service;

import com.ad.payload.dto.PfCategoryDto;
import com.ad.payload.dto.trade.CategorySearch;
import com.ad.payload.dto.trade.TradeSubAddDto;
import com.ad.payload.dto.trade.TradeSubDto;
import com.ad.payload.dto.trade.TradeSubEditDto;
import com.ad.payload.model.IdDto;
import com.ad.payload.model.PageView;
import com.ad.payload.model.ResultBean;
import com.ad.payload.vo.PfCategoryVo;
import com.ad.payload.vo.trade.CategoryLeftVo;
import com.ad.payload.vo.trade.CategoryRightFirstVo;
import com.ad.payload.vo.trade.ParentCategoryVo;
import com.ad.payload.vo.trade.TradeVo;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;


/**
 * <p>
 *  服务类  类别信息
 * </p>
 *
 * @author rclia
 * @since 2021-03-10
 */
public interface IPfCategoryService {

    /**
     * 分页查询(web端调用)
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageView<PfCategoryVo>  selectPage(long pageNo, long pageSize);

    /**
     * 新增/更新 类别信息
     * @param pfCategoryDto
     * @return
     */
    boolean saveOrUpdate(@Valid PfCategoryDto pfCategoryDto);

    /**
     * 删除 类别信息
     * @param id
     * @return
     */
    boolean removeById(@NotNull(message = "id不能为空") Long id);

    /**
     * 小程序端  请求获取类目信息列表 20条
     * @return
     */
    List<PfCategoryVo> selectListForMini();


    /**
     * 根据行业id查询子行业列表（后台）
     *
     * @param tradeSubDto
     * */
    PageView<TradeVo> pageListSubTradeVo(TradeSubDto tradeSubDto);



    /**
     * 添加子行业（后台）
     *
     * @param tradeSubAddDto
     * */
    Long addSubTrade(TradeSubAddDto tradeSubAddDto);


    /**
     * 编辑子行业（后台）
     *
     * @param tradeSubEditDto
     * */
    Long editSubTrade(TradeSubEditDto tradeSubEditDto);


    /**
     * 删除子行业（后台）
     *
     * @param idDto
     * */
    Long deleteSubTrade(IdDto idDto);



    /**
     * 查询行业左侧
     *
     * @param categorySearch
     * */
    List<CategoryLeftVo> queryCategoryLeftVo(CategorySearch categorySearch);


    /**
     * 查询行业右侧
     *
     * @param categorySearch
     * */
    List<List<CategoryRightFirstVo>> queryCategoryRightVo(CategorySearch categorySearch);


    /**
     * 查询子行业中所有一级行业
     *
     * @param idDto 存放当前行业的主键id
     * */
    List<ParentCategoryVo> queryParentCategoryVo(IdDto idDto);


    /**
     * 查询行业列表是否展示
     * */
    String isDisplayCategoryList();

}
